Данный документ содержит последовательность действий для проверки текущего состояния системы и последующего внесения изменений с целью повышения производительности и стабильности сервера.
1. Мониторинг и оптимизация лимитов дескрипторов файлов
Низкие лимиты могут приводить к ошибкам типа «Too many open files» при высокой сетевой нагрузке.
Проверка текущего состояния:
Введите команду:
ulimit -n
- Эталонное значение: 65535.
Процедура коррекции:
Откройте конфигурационный файл:
nano /etc/security/limits.conf
Добавьте в конец файла следующие строки:
* soft nofile 65535
* hard nofile 65535
root soft nofile 65535
root hard nofile 65535
2. Управление виртуальной памятью (Swappiness)**
Регулировка параметра swappiness позволяет оптимизировать использование оперативной памяти и минимизировать обращения к дисковой подсистеме.
Проверка текущего состояния:
Введите команду:
cat /proc/sys/vm/swappiness
- Эталонное значение: 10.
Процедура коррекции:
Откройте файл системных переменных:
nano /etc/sysctl.conf
Добавьте или измените строку:
vm.swappiness = 10
[!info] Техническое примечание
Значение 10 идеально подходит для систем с 1–4 ГБ RAM, так как заставляет систему приоритетно использовать физическую память. Если объём RAM менее 1 ГБ, допустимо оставить стандартное значение 60. Для систем с 8 ГБ RAM и выше можно снижать параметр до 1–5.
3. Настройка сетевого стека и параметров TCP/IP
Комплексная оптимизация для ускорения обработки входящих соединений и эффективного закрытия сессий.
Проверка текущих сетевых параметров:
Введите команду:
sysctl net.ipv4.tcp_fin_timeout net.ipv4.ip_local_port_range net.core.netdev_max_backlog
Процедура коррекции:
В файле :
nano /etc/sysctl.conf
добавьте следующие параметры:
net.ipv4.tcp_fin_timeout = 15
net.ipv4.ip_local_port_range = 1024 65535
net.core.netdev_max_backlog = 5000
Для мгновенного применения всех изменений в /etc/sysctl.conf выполните команду:
sysctl -p
4. Контроль планировщика ввода-вывода (I/O Scheduler)
Выбор планировщика критичен для минимизации задержек виртуальных дисков.
Проверка текущего состояния:
Введите команду, соответствующую типу вашего накопителя:
# 1. Для виртуальных дисков VIRTIO (чаще всего на VPS):
cat /sys/block/vda/queue/scheduler
# 2. Для дисков SATA/SSD/SCSI:
cat /sys/block/sda/queue/scheduler
# 3. Для современных накопителей NVMe:
cat /sys/block/nvme0n1/queue/scheduler
- Эталонное значение:
noneилиmq-deadline. - Действие: Если один из указанных вариантов заключён в квадратные скобки (например,
[mq-deadline]), система работает оптимально.
5. Идентификация системных характеристик
Для фиксации базового состояния системы в Obsidian используйте следующие команды:
- Версия ядра:
uname -a
- Дисковая активность и разделы: `
df -hT
- Статус TCP BBR:
sysctl net.ipv4.tcp_congestion_control
6. Применение изменений и верификация
Для того чтобы все внённые правки (особенно лимиты файловых дескрипторов и параметры ядра) вступили в силу для всех системных служб и текущих сессий, необходимо выполнить перезагрузку сервера.
Процедура:
- Примените параметры ядра (если не сделали этого ранее):
sysctl -p
- Выполните полную перезагрузку системы:
reboot
[!ВНИМАНИЕ] Важно
Изменения вlimits.confне подхватываются «на лету» для уже запущенных процессов. Перезагрузка – самый надёжный способ убедиться, что новые лимиты применились ко всей инфраструктуре сервера. После перезагрузки проверьте статус ключевых параметров.
- Лимиты:
ulimit -n(должно быть 65535). - Память:
cat /proc/sys/vm/swappiness(должно быть 10). - Сеть:
sysctl net.ipv4.tcp_congestion_control(должно быть bbr).